package com.lemon.blog.web.service;

import com.lemon.blog.web.domain.BlFrontMenu;
import com.lemon.blog.web.domain.vo.RouterVo;
import com.lemon.blog.web.domain.vo.TreeSelect;
import com.lemon.common.core.base.BaseService;

import java.util.List;

/**
 * 包名称：com.lemon.blog.service
 * 类名称：BlFrontMenuService
 * 类描述：前台菜单业务层
 * 创建人：@author huangpeng
 * 创建时间：2022年04月25日 17:12
 */
public interface BlFrontMenuService extends BaseService<BlFrontMenu> {

    /**
     * 查询系统菜单列表
     * @Title: selectMenuList
     * @Description: 查询系统菜单列表
     * @param menu
     * @return: List<BlFrontMenu>
     * @throws:
     * @author: huangpeng
     * @Date: 2023/2/26 19:38
     */
     List<BlFrontMenu> selectMenuList(BlFrontMenu menu);

    /**
     * 查询菜单树信息
     * @Title: selectMenuTree
     * @Description: 查询菜单树信息
     * @param
     * @return: List<BlFrontMenu>
     * @throws:
     * @author: huangpeng
     * @Date: 2023/2/26 19:39
     */
     List<BlFrontMenu> selectMenuTree();

    /**
     * 构建前端路由所需要的菜单
     * @Title: buildMenus
     * @Description: 构建前端路由所需要的菜单
     * @param menus 菜单列表
     * @return: List<RouterVo> 路由列表
     * @throws:
     * @author: huangpeng
     * @Date: 2023/2/26 19:39
     */
     List<RouterVo> buildMenus(List<BlFrontMenu> menus);

    /**
     * 构建前端所需要树结构
     * @Title: buildMenuTree
     * @Description: 构建前端所需要树结构
     * @param menus
     * @return: List<BlFrontMenu>
     * @throws:
     * @author: huangpeng
     * @Date: 2023/2/26 19:40
     */
     List<BlFrontMenu> buildMenuTree(List<BlFrontMenu> menus);

    /**
     * 构建前端所需要下拉树结构
     * @Title: buildMenuTreeSelect
     * @Description: 构建前端所需要下拉树结构
     * @param menus
     * @return: List<TreeSelect>
     * @throws:
     * @author: huangpeng
     * @Date: 2023/2/26 19:40
     */
     List<TreeSelect> buildMenuTreeSelect(List<BlFrontMenu> menus);
}
